People use many different types of digital devices to access services over the Internet and other networks. As is widely understood, many of these services, ranging from news services to on-line shopping and entertainment, make extensive use of photographs and other images, videos, and audios.
FIG. 1 illustrates a number of different digital devices 102-108 that may be used to access services and content maintained on servers 110 and 112 via the Internet 114. Desktop computer 102 has a large, high-resolution display 122, thus, its user is likely to want images or videos displayed at their highest resolutions to take advantage of the capabilities of display 122. On the other hand, portable display 124 of portable computer 104 may not provide resolution comparable to that of the high-resolution display 122 of desktop computer 102. Alternatively, even if portable display 124 does support high resolution graphics, portable computer 104 may use a shared system memory for graphics support, and its user may be unwilling to allocate system memory to support high-resolution graphics.
In addition to desktop computer 102 and portable computer 104, handheld devices also are used to access Internet or other multimedia services. For example, personal digital assistant 106 includes a touchscreen display 126, measuring a few inches on each side, for displaying small images or video frames with a portion of the resolution available with desktop computer 102 and portable computer 104. Even a smaller device, such as wireless telephone 108, includes a phone display 128 usable to access Internet or other multimedia services and to present very small images and other multimedia content to a user.
The range of devices 102-108 accessing content on servers 110 and 112 has posed a problem for content providers. More specifically, because of the range of displays 122-128 used by devices 102-108, respectively, content providers have had to make multimedia content available in different formats. For example, high resolution images or high definition videos have to be made available to users with high resolution displays 122. On the other hand, condensed images or videos with only a fraction of the resolution or color granularity of the high resolution images or high definition videos have to be made available for users with devices such as personal digital assistant 106 and wireless telephone 108 that have lower processing capabilities and lower resolution displays 126 and 128, respectively. To access the appropriate format of multimedia content, users manually specify desired parameters such as resolution and quality. Alternatively, servers 110-112 may poll devices 102-108 to determine what type of graphics, video, or audio data each of the devices 102-108 can support to determine what format of multimedia content to transmit to devices 102-108.
The problem of servers 110-112 having to maintain and selectively communicate multiple different multimedia formats is addressed by scalable multimedia formats. For example, the Joint Photographic Experts Group 2000 (“JPEG 2000”) format specifies an image codestream that is scalable for each of a number of different access types including tile, resolution, layer, color component, and precinct. The codestream is scalable at a number of levels within each of these access types. A single codestream can be accessed by different devices to present multimedia adapted to levels of each access type that each of the devices is configured to support. Thus, one multimedia codestream can be stored and provided to any device supporting the scalable codestream.
Although use of a scalable codestream eliminates having to maintain multiple codestreams for a particular multimedia content, controlling access to the scalable codestream involves complicated key management. When multiple, different multimedia codestreams are maintained, a key is generated for each particular codestream and is issued to a user authorized to access the multimedia. Content encryption keys used to decrypt data packets can be derived from the key using known methods, allowing the user to access the encrypted multimedia.
Using a scalable codestream, generating and providing appropriate keys may be much more problematic. A user authorized for a certain level of access will have to be issued multiple keys to provide a key for the levels of access for which the user is authorized as well as lower ranked levels of access that are encompassed in the user's authorized level of access.
FIGS. 2A-2F are a series of block diagrams illustrating the nature of a JPEG 2000 codestream. FIG. 2A shows an image 200 as a user views it: image 200 is comprised of an array of elements 202. However, the actual structure of the scalable codestream is not so simply organized.
FIG. 2B is an array 210 of differently sized data blocks 212, representing how different resolution levels are represented in the codestream. As a function of discrete wavelet transformation, accessing different resolution levels involves accessing different blocks of data 212 in the codestream. As shown in FIG. 2C, to access a lowest supported resolution level, only a first data block 222 of array 220 is accessed. As shown in FIG. 2D, to access a next highest resolution level, data block 222 and a series of adjoining second data blocks 232 are accessed. To access a next highest resolution level, as shown in FIG. 2E, first data block 222, second data blocks 232, and a series of adjoining third data blocks 242 all must be accessed. Adjoining groups of data blocks are accessed until the highest available image resolution is reached. Thus, data blocks used in presenting higher levels of resolution encompasses data used in presenting lower levels of resolution
For a user authorized to view images at the highest resolution, the user must be provided with a key from which the data blocks associated with the highest level of resolution can be decrypted, as well as the keys from which all the data blocks associated with lower levels of resolution can be decrypted. Alternatively, using a hierarchical key system, a user can be given one key from which keys to lower levels of access can be derived.
Unfortunately, not all access types in a scalable codestream have hierarchical structures that lends themselves to hierarchical key systems. For example, tile access, which allows a user to access one or more portions of an image, does not involve accessing hierarchically inclusive portions of data. As shown in FIG. 2F, array 250 shows portions of data blocks 252-258 that are used to present a portion of an image at high resolution. To present the selected portion of the image, portions of data blocks 252-258 representing different resolution levels all must be accessed. Because the data to be used does not adhere to a hierarchical structure, multiple keys would have to be generated, maintained, and distributed to selectively control access to different resolutions within the image.